home *** CD-ROM | disk | FTP | other *** search
/ Complete Linux / Complete Linux.iso / docs / apps / database / postgres / postgre3.z / postgre3 / src / lib / H / access / tqual.h < prev    next >
Encoding:
C/C++ Source or Header  |  1992-08-27  |  3.9 KB  |  225 lines

  1. /*
  2.  * tqual.h --
  3.  *    POSTGRES time qualification definitions.
  4.  *
  5.  * Note:
  6.  *    It may be desirable to allow time qualifications to indicate
  7.  *    relative times.
  8.  */
  9.  
  10. #ifndef    TQualIncluded        /* Include this file only once */
  11. #define TQualIncluded    1
  12.  
  13. /*
  14.  * Identification:
  15.  */
  16. #define TQUAL_H    "$Header: /private/postgres/src/lib/H/access/RCS/tqual.h,v 1.11 1992/02/19 01:51:53 mer Exp $"
  17.  
  18. #include "tmp/postgres.h"
  19. #include "utils/nabstime.h"
  20. #include "access/htup.h"
  21.  
  22. typedef struct TimeQualSpace {
  23.     char    data[12];
  24. } TimeQualSpace;
  25.  
  26. typedef Pointer    TimeQual;
  27.  
  28. /* Tuples valid as of StartTransactionCommand */
  29. #define    NowTimeQual    ((TimeQual) NULL)
  30.  
  31. /* As above, plus updates in this command */
  32. extern TimeQual    SelfTimeQual;
  33.  
  34. #ifndef    GOODAMI
  35. #define LispSelfTimeQual    ((TimeQual) 1)
  36. #endif    /* !defined(GOODAMI) */
  37.  
  38. void setheapoverride ARGS ((bool on));
  39. bool heapisoverride ARGS ((void));
  40.  
  41. /*
  42.  * TimeQualIsValid --
  43.  *    True iff time qualification is valid.
  44.  */
  45. extern
  46. bool
  47. TimeQualIsValid ARGS((
  48.     TimeQual    qual
  49. ));
  50.  
  51. /*
  52.  * TimeQualIsLegal --
  53.  *    True iff time qualification is legal.
  54.  *    I.e., true iff time qualification does not intersects the future,
  55.  *    relative to the transaction start time.
  56.  *
  57.  * Note:
  58.  *    Assumes time qualification is valid.
  59.  */
  60. extern
  61. bool
  62. TimeQualIsLegal ARGS((
  63.     TimeQual    qual
  64. ));
  65.  
  66. /*
  67.  * TimeQualIncludesNow --
  68.  *    True iff time qualification includes "now."
  69.  *
  70.  * Note:
  71.  *    Assumes time qualification is valid.
  72.  */
  73. extern
  74. bool
  75. TimeQualIncludesNow ARGS((
  76.     TimeQual    qual
  77. ));
  78.  
  79. /*
  80.  * TimeQualIncludesPast --
  81.  *    True iff time qualification includes some time in the past.
  82.  *
  83.  * Note:
  84.  *    Assumes time qualification is valid.
  85.  *    XXX may not be needed?
  86.  */
  87. extern
  88. bool
  89. TimeQualIncludesPast ARGS((
  90.     TimeQual    qual
  91. ));
  92.  
  93. /*
  94.  * TimeQualIsSnapshot --
  95.  *    True iff time qualification is a snapshot qualification.
  96.  *
  97.  * Note:
  98.  *    Assumes time qualification is valid.
  99.  */
  100. extern
  101. bool
  102. TimeQualIsSnapshot ARGS((
  103.     TimeQual    qual
  104. ));
  105.  
  106. /*
  107.  * TimeQualIsRanged --
  108.  *    True iff time qualification is a ranged qualification.
  109.  *
  110.  * Note:
  111.  *    Assumes time qualification is valid.
  112.  */
  113. extern
  114. bool
  115. TimeQualIsRanged ARGS((
  116.     TimeQual    qual
  117. ));
  118.  
  119. /*
  120.  * TimeQualIndicatesDisableValidityChecking --
  121.  *    True iff time qualification indicates validity checking should be
  122.  *    disabled.
  123.  *
  124.  * Note:
  125.  *    XXX This should not be implemented since this does not make sense.
  126.  */
  127. extern
  128. bool
  129. TimeQualIndicatesDisableValidityChecking ARGS((
  130.     TimeQual    qual
  131. ));
  132.  
  133. /*
  134.  * TimeQualGetSnapshotTime --
  135.  *    Returns time for a snapshot time qual.
  136.  *
  137.  * Note:
  138.  *    Assumes time qual is valid snapshot time qual.
  139.  */
  140. extern
  141. Time
  142. TimeQualGetSnapshotTime ARGS((
  143.     TimeQual    qual
  144. ));
  145.  
  146. /*
  147.  * TimeQualGetStartTime --
  148.  *    Returns start time for a ranged time qual.
  149.  *
  150.  * Note:
  151.  *    Assumes time qual is valid ranged time qual.
  152.  */
  153. extern
  154. Time
  155. TimeQualGetStartTime ARGS((
  156.     TimeQual    qual
  157. ));
  158.  
  159. /*
  160.  * TimeQualEndTime --
  161.  *    Returns end time for a ranged time qual.
  162.  *
  163.  * Note:
  164.  *    Assumes time qual is valid ranged time qual.
  165.  */
  166. extern
  167. Time
  168. TimeQualGetEndTime ARGS((
  169.     TimeQual    qual
  170. ));
  171.  
  172. /*
  173.  * TimeFormSnapshotTimeQual --
  174.  *    Returns snapshot time qual for a time.
  175.  *
  176.  * Note:
  177.  *    Assumes time is valid.
  178.  */
  179. extern
  180. TimeQual
  181. TimeFormSnapshotTimeQual ARGS((
  182.     AbsoluteTime    time
  183. ));
  184.  
  185. /*
  186.  * TimeFormRangedTimeQual --
  187.  *    Returns ranged time qual for a pair of times.
  188.  *
  189.  * Note:
  190.  *    If start time is invalid, it is regarded as the epoch.
  191.  *    If end time is invalid, it is regarded as "now."
  192.  *    Assumes start time is before (or the same as) end time.
  193.  */
  194. extern
  195. TimeQual
  196. TimeFormRangedTimeQual ARGS((
  197.     AbsoluteTime    startTime,
  198.     AbsoluteTime    endTime
  199. ));
  200.  
  201. /*
  202.  * TimeFormDebuggingTimeQual --
  203.  *    Returns debugging snapshot time qual for a time.
  204.  *
  205.  * Note:
  206.  *    Removed since it does not make sense semantically.
  207.  */
  208.  
  209. /*
  210.  * HeapTupleSatisfiesTimeQual --
  211.  *    True iff heap tuple satsifies a time qual.
  212.  *
  213.  * Note:
  214.  *    Assumes heap tuple is valid.
  215.  *    Assumes time qual is valid.
  216.  */
  217. extern
  218. bool
  219. HeapTupleSatisfiesTimeQual ARGS((    
  220.     HeapTuple    tuple,
  221.     TimeQual    qual
  222. ));
  223.  
  224. #endif    /* !defined(TQualIncluded) */
  225.